import QQMapWX from "@/api/js/qqmap-wx-jssdk";

export default {
  state: {
    // 存储用户地址信息，默认值为中山市和广东省
    addressInfo: {
      city: '中山市',
      district: '',
      street: '石岐区街道',
      province: '广东省',
      address: '电子科技大学中山学院学院路1号',
      name: '厚德楼',
      city_code: '',
      lat: '',
      lng: '',
    }
  },
  mutations: {
    // 更新地址信息的 mutation
    updateAddressInfo(state, addressInfo) {
      state.addressInfo = addressInfo;
    }
  },
  actions: {
    getLocation({ commit }) {
      uni.authorize({
        scope: 'scope.userLocation',
        success() {
          // 添加授权成功的弹窗提示
          uni.showToast({
            title: '已授权获取位置信息',
            icon: 'success',
            duration: 2000
          });

          // 初始化腾讯地图 SDK
          const qqmapsdk = new QQMapWX({
            key: 'FAABZ-WBWRJ-LUJDS-WVK5L-KMBW3-YYFSQ'
          });

          // 获取用户当前地理位置
          uni.getLocation({
            type: 'gcj02', // 使用国测局坐标系
            success(res) {
              const { latitude, longitude } = res;

              // 使用腾讯地图 SDK 进行逆地址解析
              qqmapsdk.reverseGeocoder({
                location: {
                  latitude: parseFloat(latitude),
                  longitude: parseFloat(longitude)
                },
                success(result) {
                  const addressInfo = {
                    city: result.result.address_component.city,
                    district: result.result.address_component.district,
                    street: result.result.address_component.street,
                    province: result.result.address_component.province,
                    address: result.result.formatted_addresses.recommend,
                    name: result.result.ad_info.name,
                    city_code: result.result.ad_info.city_code,
                    lat: latitude,
                    lng: longitude
                  };

                  // 提交到 Vuex state
                  commit('updateAddressInfo', addressInfo);

                  // 添加弹窗提示
                  uni.showToast({
                    title: '位置获取成功',
                    icon: 'success',
                    duration: 2000
                  });
                },
                fail(error) {
                  console.error('腾讯地图逆地址解析失败:', error);
                  uni.showToast({
                    title: '地址解析失败',
                    icon: 'none',
                    duration: 2000
                  });
                }
              });
            },
            fail(err) {
              console.error('获取位置失败:', err);
              uni.showToast({
                title: '获取位置失败',
                icon: 'none',
                duration: 2000
              });
            }
          });
        },
        fail(res) {
          // 用户拒绝授权时的提示
          uni.showToast({
            title: '请允许获取位置信息',
            icon: 'none',
            duration: 2000
          });
        }
      });
    }
  }
};